package com.jx.mlxg.service;

import com.jx.mlxg.entity.ApprovalRecord;
import com.jx.mlxg.entity.MaterialRequest;
import com.jx.mlxg.entity.Orders;
import com.jx.mlxg.entity.Addresses;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jx.mlxg.entity.Users;
import com.jx.mlxg.utils.PageResponse;
import com.jx.mlxg.utils.UserOrderStatisticsResponse;

import java.util.Map;

/**
* @author Administrator
* @description 针对表【orders】的数据库操作Service
* @createDate 2025-02-25 21:15:46
*/
public interface OrdersService extends IService<Orders> {

    /**
      * 更新订单关联的地址ID
      * @param orderId 订单ID
      * @param addressId 地址ID
      * @return 更新结果
      */
     boolean updateOrderAddressId(String orderId, Integer addressId);

    /**
     * 根据发货申请 ID 创建订单
     * @param requestInfo 发货申请
     * @return 创建的订单 ID
     */
    String createOrderByRequestId(MaterialRequest requestInfo);

    PageResponse<Orders> listOrders(int pageNo, int pageSize, Map<String,Object> filterParams);

    PageResponse<Orders> listOrdersByUsername(String username, int pageNo, int pageSize);

    Orders getOrderById(String orderId,String openId);

    ApprovalRecord getApprovalRecordByOrderId(String orderId, Users users);

    int selectByStatus();

    /**
     * 获取用户订单统计数据
     * @param timeDimension 时间维度：all, 1d, 7d, 15d, 30d, custom
     * @param startTime 开始时间（时间戳，当timeDimension为custom时有效）
     * @param endTime 结束时间（时间戳，当timeDimension为custom时有效）
     * @return 用户订单统计响应
     */
    UserOrderStatisticsResponse getUserOrderStatistics(String timeDimension, Long startTime, Long endTime);

    /**
     * 根据订单ID查询指定人员的地址信息
     * @param orderId 订单ID
     * @return 地址信息列表
     */
    List<Addresses> getAddressByOrderId(String orderId);
}
